package 分类.队列和栈;

import java.util.LinkedList;
import java.util.Queue;

public class 用队列实现栈 {
    class MyStack {
        Queue<Integer> q = new LinkedList<>();
        int top_elem = 0;

        /**
         * 添加元素到栈顶
         */
        public void push(int x) {
            // x 是队列的队尾，是栈的栈顶
            q.offer(x);
            top_elem = x;
        }

        /**
         * 返回栈顶元素
         */
        public int top() {
            return top_elem;
        }

        /**
         * 删除栈顶的元素并返回
         */
        public int pop() {
           int size=q.size();
           while (size>2){
               q.offer(q.poll());
               size--;
           }

           top_elem=q.peek();
           q.offer(q.poll());
           return q.poll();
        }

        /**
         * 判断栈是否为空
         */
        public boolean empty() {
            return q.isEmpty();
        }
    }
}
